package cn.gs;

/**
 *
 * 切入点表达式 关键点说明：
 * 可以定义任意数量的@Pointcut方法
 * 切入点之间可以通过逻辑运算符组合（&&、||、!）
 * 不同的通知方法可以自由选择需要的切入点
 * 每个切入点方法需要：
 *      使用public void修饰
 *      方法体为空
 *      通过@Pointcut注解指定表达式
 * **/
/**
 * 组件注册：
 *      切面类必须添加@Component或通过@Bean注册
 *      配置类需包含@EnableAspectJAutoProxy（已在AppConfig中配置）
 * 切入点表达式：
 * // 正确格式示例
 *      execution([可见性] 返回类型 [包路径].[方法名](参数) [异常])
 *  // 示例：拦截service包及其子包下所有public方法
 *      execution(public * cn.gs.service..*.*(..))
 *
 * 代理方式选择：
 *      // 在配置类中指定（当前已配置）
 *      @EnableAspectJAutoProxy(proxyTargetClass = true) // CGLIB代理
 * 通知执行顺序：
 *      默认顺序：@Around -> @Before -> 方法执行 -> @AfterReturning/@AfterThrowing -> @After
 * 多切面时使用@Order控制优先级
 *
 * **/